package com.xrh.xdemo.api.dto.entity;

import java.io.Serializable;
import java.util.Date;

import com.xrh.xdemo.api.constants.LoginConstants;
import com.xrh.xdemo.api.dto.extend.UserExtraInfoDTO;
import com.xrh.xdemo.api.enums.SysRoleEnum;

import io.swagger.annotations.ApiModelProperty;
import lombok.Builder;
import lombok.Data;
import lombok.experimental.Tolerate;

@Data
@Builder
public class SysUserDTO  implements Serializable {

	private static final long serialVersionUID = 1L;
    
    /**主键id */
	@ApiModelProperty("主键id")
	private Long id;

	/**创建人id */
	@ApiModelProperty("创建人id")
	private Long createUserId;

	/**创建人账号 */
	@ApiModelProperty("创建人账号")
	private String createUserAccount;

	/**创建人 */
	@ApiModelProperty("创建人")
	private String createUserName;

	/**创建时间 */
	@ApiModelProperty("创建时间")
	private Date createTime;

	/**最后更新人id */
	@ApiModelProperty("最后更新人id")
	private Long updateUserId;

	/**更新人账号 */
	@ApiModelProperty("更新人账号")
	private String updateUserAccount;

	/**更新人 */
	@ApiModelProperty("更新人")
	private String updateUserName;

	/**最后更新时间 */
	@ApiModelProperty("最后更新时间")
	private Date updateTime;

	/**更新版本号 */
	@ApiModelProperty("更新版本号")
	private Integer updateVersion;

	/**删除标识(0:未删除,时间戳:已经删除) */
	@ApiModelProperty("删除标识(0:未删除,时间戳:已经删除)")
	private Long delFlag;

	/**账号/用户名 */
	@ApiModelProperty("账号/用户名")
	private String account;

	/**用户姓名 */
	@ApiModelProperty("用户姓名")
	private String userName;

	/**邮箱 */
	@ApiModelProperty("邮箱")
	private String email;

	/**手机号 */
	@ApiModelProperty("手机号")
	private String phoneNumber;

	/**是否禁用(0:禁用 , 1: 启用) */
	@ApiModelProperty("是否禁用(0:禁用 , 1: 启用)")
	private Integer enable;

	/**性别 */
	@ApiModelProperty("性别")
	private String gender;

	/**生日 */
	@ApiModelProperty("生日")
	private Date birthday;

	/**上次登录时间 */
	@ApiModelProperty("上次登录时间")
	private Date lastLoginTime;

	/**用户扩展信息 */
	@ApiModelProperty("用户扩展信息")
	private UserExtraInfoDTO extraInfo;
	
	/**
	 * @function 是否是超级管理员
	 * @author 肖荣辉
	 * @date 2023年12月8日
	*/
	public boolean isAdmin() {
		return LoginConstants.JWT_LOGIN_SYS_ACCOUNT_ID.equals(id);
	}
	
    @Tolerate
    public SysUserDTO(){}

}
